package com.furns.entity;

import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Set;

/**
 * Cart 购物车, 包含多个CartItem
 *
 * @Author LuoJiaCheng
 * @ID 2240129126
 * @Version 1.0
 */
public class Cart {
    private HashMap<Integer, CartItem> items = new HashMap<>();
    //购物车商品总数量


    public HashMap<Integer, CartItem> getItems() {
        return items;
    }

    /**
     *
     * @return 购物车总价
     */
    public BigDecimal getCartTotalPrice(){

        BigDecimal cartTotalPrice = new BigDecimal(0);
        Set<Integer> keys = items.keySet();
        for (Integer id : keys) {
            cartTotalPrice = cartTotalPrice.add(items.get(id).getTotalPrice());
        }
        return cartTotalPrice;
    }

    //添加家居CartItem
    public void addItem(CartItem cartItem) {
        CartItem item = items.get(cartItem.getId());
        if (item == null) {//当前购物车没有这个物品
            items.put(cartItem.getId(), cartItem);
        } else {
            item.setCount(item.getCount() + 1);
            item.setTotalPrice(item.getTotalPrice().add(item.getPrice()));
        }
    }

    //购物车总数量
    public int getTotalCount() {
        int totalCount = 0;
        Set<Integer> keys = items.keySet();
        for (Integer id : keys) {
            totalCount += items.get(id).getCount();
        }
        return totalCount;
    }

    /**
     * 修改指定的CartItem的数量和总价 根据传入的id和count
     * @param id
     * @param count
     */
    public void updateCount(int id,int count){
        CartItem item = items.get(id);
        if(item!=null){
            //先更新数量
            item.setCount(count);
            //再更新总价 单价乘总价
            item.setTotalPrice(item.getPrice().multiply(new BigDecimal(item.getCount())));
        }
    }

    /**
     * 根据传入的id 删除item
     * @param id
     */
    public void delItem(int id){
        items.remove(id);
    }

    /**
     * 清空
     */
    public void clear(){
        items.clear();
    }

}
